#include "xen_string_string_map.h"
#include "xen_vbd_decl.h"
#include "xen_vif_decl.h"
-#include "xen_vtpm_decl.h"
#include "xen_vm_decl.h"
#include "xen_vm_power_state.h"
+#include "xen_vtpm_decl.h"
/*
enum xen_on_crash_behaviour actions_after_crash;
struct xen_vif_record_opt_set *vifs;
struct xen_vbd_record_opt_set *vbds;
- uint64_t tpm_instance;
- uint64_t tpm_backend;
+ struct xen_vtpm_record_opt_set *vtpms;
char *bios_boot;
bool platform_std_vga;
char *platform_serial;
#include "xen_common.h"
#include "xen_driver_type.h"
-#include "xen_vtpm_decl.h"
#include "xen_vm_decl.h"
+#include "xen_vtpm_decl.h"
/*
- * The VTPM class.
- *
+ * The VTPM class.
+ *
* A virtual TPM device.
*/
char *uuid;
struct xen_vm_record_opt *vm;
struct xen_vm_record_opt *backend;
- int instance;
enum xen_driver_type driver;
+ uint64_t instance;
} xen_vtpm_record;
/**
xen_vtpm_record_alloc(void);
/**
- * Free the given xen_vtpm_record, and all referenced values. The given
- * record must have been allocated by this library.
+ * Free the given xen_vtpm_record, and all referenced values. The
+ * given record must have been allocated by this library.
*/
extern void
xen_vtpm_record_free(xen_vtpm_record *record);
xen_vtpm_record_opt_set_alloc(size_t size);
/**
- * Free the given xen_vtpm_record_opt_set, and all referenced values.
+ * Free the given xen_vtpm_record_opt_set, and all referenced values.
* The given set must have been allocated by this library.
*/
extern void
xen_vtpm_get_backend(xen_session *session, xen_vm *result, xen_vtpm vtpm);
+/**
+ * Get the driver field of the given VTPM.
+ */
+extern bool
+xen_vtpm_get_driver(xen_session *session, enum xen_driver_type *result, xen_vtpm vtpm);
+
+
/**
* Get the instance field of the given VTPM.
*/
extern bool
-xen_vtpm_get_instance(xen_session *session, int *result, xen_vtpm vtpm);
+xen_vtpm_get_instance(xen_session *session, uint64_t *result, xen_vtpm vtpm);
#endif
#include "xen_string_string_map.h"
#include "xen_vbd.h"
#include "xen_vif.h"
-#include "xen_vtpm.h"
#include "xen_vm.h"
#include "xen_vm_power_state_internal.h"
+#include "xen_vtpm.h"
XEN_FREE(xen_vm)
{ .key = "vbds",
.type = &abstract_type_ref_set,
.offset = offsetof(xen_vm_record, vbds) },
+ { .key = "vtpms",
+ .type = &abstract_type_ref_set,
+ .offset = offsetof(xen_vm_record, vtpms) },
{ .key = "bios_boot",
.type = &abstract_type_string,
.offset = offsetof(xen_vm_record, bios_boot) },
xen_cpu_feature_set_free(record->vcpus_features_force_off);
xen_vif_record_opt_set_free(record->vifs);
xen_vbd_record_opt_set_free(record->vbds);
+ xen_vtpm_record_opt_set_free(record->vtpms);
free(record->bios_boot);
free(record->platform_serial);
free(record->builder);
#include "xen_common.h"
#include "xen_driver_type_internal.h"
#include "xen_internal.h"
-#include "xen_vtpm.h"
#include "xen_vm.h"
+#include "xen_vtpm.h"
XEN_FREE(xen_vtpm)
XEN_SET_ALLOC_FREE(xen_vtpm)
+XEN_ALLOC(xen_vtpm_record)
+XEN_SET_ALLOC_FREE(xen_vtpm_record)
+XEN_ALLOC(xen_vtpm_record_opt)
+XEN_RECORD_OPT_FREE(xen_vtpm)
+XEN_SET_ALLOC_FREE(xen_vtpm_record_opt)
static const struct_member xen_vtpm_record_struct_members[] =
{ .key = "driver",
.type = &xen_driver_type_abstract_type_,
.offset = offsetof(xen_vtpm_record, driver) },
+ { .key = "instance",
+ .type = &abstract_type_int,
+ .offset = offsetof(xen_vtpm_record, instance) }
};
const abstract_type xen_vtpm_record_abstract_type_ =
bool
-xen_vtpm_get_instance(xen_session *session, int *result, xen_vtpm vtpm)
+xen_vtpm_get_driver(xen_session *session, enum xen_driver_type *result, xen_vtpm vtpm)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = vtpm }
+ };
+
+ abstract_type result_type = xen_driver_type_abstract_type_;
+ char *result_str = NULL;
+ XEN_CALL_("VTPM.get_driver");
+ *result = xen_driver_type_from_string(session, result_str);
+ return session->ok;
+}
+
+
+bool
+xen_vtpm_get_instance(xen_session *session, uint64_t *result, xen_vtpm vtpm)
{
abstract_value param_values[] =
{
*result = session->ok ? xen_strdup_((char *)vtpm) : NULL;
return session->ok;
}
-
-